package cube.data.util;

import java.util.ArrayList;
import java.util.List;

/**
 * List数据操作工具
 * 
 * @author abiao
 */
public abstract class ListUtil {

	/**
	 * list转byte数组
	 */
	public static byte[] list2bytes(List<Byte> list) {
		byte[] bytes = new byte[list.size()];
		for (int i = 0; i < bytes.length; i++) {
			bytes[i] = list.get(i);
		}
		return bytes;
	}

	/**
	 * list<byte[]>转byte数组
	 */
	public static byte[] byteslist2bytes(List<byte[]> list) {
		byte[] bytes = new byte[getDataSize(list)];
		int p = 0;
		for (int i = 0; i < list.size(); i++) {
			byte[] data = list.get(i);
			System.arraycopy(data, 0, bytes, p, data.length);
			p += data.length;
		}
		return bytes;
	}

	/**
	 * 获取数据总长度
	 */
	public static int getDataSize(List<byte[]> list) {
		int size = 0;
		for (int i = 0; i < list.size(); i++) {
			size += list.get(i).length;
		}
		return size;
	}

	/**
	 * byte数组转list
	 */
	public static List<Byte> bytes2list(byte[] data) {
		List<Byte> list = new ArrayList<Byte>();
		for (int i = 0; i < data.length; i++) {
			list.add(data[i]);
		}
		return list;
	}
}
